<?php
/**
 * 文章资讯模块
 * 
 * ============================================================================
 * 版权所有: (c) 2009-2011，<UEShop Inc>，并保留所有权利。
 * 网站地址: http://www.ueshop.cn
 * ----------------------------------------------------------------------------
 * 这不是一个自由软件！您只能在不用于商业目的的前提下对程序代码进行修改和使用；
 * 不允许对程序代码以任何形式任何目的的再发布。
 * ============================================================================
 *
 * @author      cmpan
 * @copyright   Copyright (c) 2009-2010 UEShop Inc. (http://www.ueshop.cn)
 * @license     http://www.ueshop.cn/1_0.txt
 */
class InfoModel extends UE_Model {
    public $table  = 'ue_info';
	public $key    = 'info_id';
	
	public function add($info) {
	    //print_r($info);
	    if (strlen($info['info_title']) < 8 || strlen($info['info_title']) > 80) {
	    	$this->setErr('标题长度为4-40个中文字符或8-80个英文字符！');
	    	return false;
	    }
	    
	    if (!empty($_FILES['info_cover']['tmp_name'])) {
	    	UE_Loader::loadModel('UploaderModel', 'system');
	    	$uploader = new UploaderModel();
	    	$uploader->imgWatermark = false;
	    	$uploader->setField('info_cover');
	    	$infoCover = $uploader->add(array('upload_app'=>'info', 'upload_type' => 'cover'));
	    	
	    	if ($infoCover) {	    		
		    	$info['info_cover'] = $infoCover['upload_id'];
	    	}
	    }
	    
	    $info['info_status'] = $info['info_is_draft'] ? 0 : 1;  // 1：发布，0：草稿，-1：垃圾
	    
	    $info['info_dateline'] = time();
	    
	    $pid = parent::add($info);
	    
	    // 排序默认使用id一样的序号
	    if ($pid && empty($info['info_order'])) {
	    	UE_DB::factory()->query("UPDATE {$this->table} SET info_order=info_id WHERE info_id='$pid' LIMIT 1");
	    }
	    
	    $this->_db()->query("INSERT INTO ue_info_content (info_id, info_content) VALUE ('$pid', '{$info['info_content']}')");
	    
	    if (!empty($info['info_cover'])) {
	    	// 更新ue_upload表确定在这里使用附件
	    	UE_DB::factory()->query("UPDATE ue_upload SET upload_item_id='$pid' WHERE upload_id='{$info['info_cover']}' LIMIT 1");
	    }
	    
	    return $pid;
	}
	
	public function read($id = null) {
		if ($id) {
			$this->id = $id;
		}
		
		$info = parent::read($this->id);
		
		if ($info) {
	    	$sql = "SELECT info_content FROM ue_info_content WHERE info_id='{$this->id}' LIMIT 1";
	    	$info['info_content'] = UE_DB::factory()->getfirstField($sql);
	    }
	    
	    return $info;
	}
	
	public function update($info) {
		if (!$this->check()) {
			return false;
		}
		$db = UE_DB::factory();
		$oldInfo = $this->read();
		
		  //print_r($info);
	    if (strlen($info['info_title']) < 8 || strlen($info['info_title']) > 80) {
	    	$this->setErr('标题长度为4-40个中文字符或8-80个英文字符！');
	    	return false;
	    }
	    
	    if (!empty($_FILES['info_cover']['tmp_name'])) {
	    	UE_Loader::loadModel('UploaderModel', 'system');
	    	$uploader = new UploaderModel();
	    	$uploader->imgWatermark = false;
	    	$uploader->setField('info_cover');
	    	$infoCover = $uploader->add(array('upload_app'=>'info', 'upload_type' => 'cover'));
	    	
	    	if ($infoCover) {	    		
		    	$info['info_cover'] = $infoCover['upload_id'];
	    	}
	    }
	    
	    $info['info_status'] = $info['info_is_draft'] ? 0 : 1;  // 1：发布，0：草稿，-1：垃圾
	    
	    $info['info_modified_time'] = time();
	    
	    if(!parent::update($info)) {
	    	return false;
	    }
	    
	    $this->_db()->query("REPLACE INTO ue_info_content (info_id, info_content) VALUE ('{$this->id}', '{$info['info_content']}')");
	    
	    if (!empty($info['info_cover'])) {
	    	// 更新ue_upload表确定在这里使用附件
	    	$db->query("UPDATE ue_upload SET upload_item_id='{$this->id}' WHERE upload_id='{$info['info_cover']}' LIMIT 1");
	    }
	    
	    return true;
	}
	
	public function delete() {
		if(! $this->check()) {
			return false;
		}
		$db = UE_DB::factory();
		
		if(false === $db->delete('ue_info_content', 'info_id', $this->id)) {
			$this->setErr($db->getLastErr());
			return false;
		}
		
		$del = parent::delete();
		
		UE_Cache::createCache()->clear('cats');
		
		return $del;
	}
}